/**
	* Copyright (c) minuteproject, minuteproject@gmail.com
	* All rights reserved.
	* 
	* Licensed under the Apache License, Version 2.0 (the "License")
	* you may not use this file except in compliance with the License.
	* You may obtain a copy of the License at
	* 
	* http://www.apache.org/licenses/LICENSE-2.0
	* 
	* Unless required by applicable law or agreed to in writing, software
	* distributed under the License is distributed on an "AS IS" BASIS,
	* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
	* See the License for the specific language governing permissions and
	* limitations under the License.
	* 
	* More information on minuteproject:
	* twitter @minuteproject
	* wiki http://minuteproject.wikispaces.com 
	* blog http://minuteproject.blogspot.net
	* 
*/
/**
	* template reference : 
	* - name : OpenxavaDomainObjectUML
	* - file name : DomainObjectUMLJPAAnnotationOXAnnotationV4.vm
*/
package sistema_oficial.sistema_oficial.domain.sistemaoficial;

//MP-MANAGED-ADDED-AREA-BEGINNING @import@
//MP-MANAGED-ADDED-AREA-ENDING @import@
import java.sql.*;
import java.util.Date;
import java.util.List;
import java.util.ArrayList;
import java.util.Set;
import java.util.HashSet;

import javax.persistence.*;
import org.openxava.annotations.*;

import sistema_oficial.sistema_oficial.domain.sistemaoficial.BienServicio;
import sistema_oficial.sistema_oficial.domain.sistemaoficial.DetalleBatch;
import sistema_oficial.sistema_oficial.domain.sistemaoficial.DetalleEntraNivel3Externo;
import sistema_oficial.sistema_oficial.domain.sistemaoficial.DetalleLoteProducidoNivel2;
import sistema_oficial.sistema_oficial.domain.sistemaoficial.DetalleLoteProductoUsadoNivel3;
import sistema_oficial.sistema_oficial.domain.sistemaoficial.DetalleProductoUsado;
import sistema_oficial.sistema_oficial.domain.sistemaoficial.DetalleSaleForzadoProductoNivel2;
import sistema_oficial.sistema_oficial.domain.sistemaoficial.DetalleSaleForzadoProductoNivel3;
import sistema_oficial.sistema_oficial.domain.sistemaoficial.DetalleTransferidoNivel3Nivel2;
import sistema_oficial.sistema_oficial.domain.sistemaoficial.Formula;
import sistema_oficial.sistema_oficial.domain.sistemaoficial.SubcuentaMayor;

/**
 *
 * <p>Title: Producto</p>
 *
 * <p>Description: Domain Object describing a Producto entity</p>
 *
 */
@Entity (name="Producto")
@Table (name="producto")
@Views({
//MP-MANAGED-UPDATABLE-BEGINNING-DISABLE @view-base-producto@
	@View(
		name="base",
		members=
        "" 	
        + "identificador  ; "
        + "descripcion  ; "
        + "codigo  ; "
        + "promedioVida  ; "
        + "subcuentaMayorCodigo  ; "
		),
//MP-MANAGED-UPDATABLE-ENDING
	@View(
		name="Create", 
		extendsView="base"
	),
	@View(
		name="Update", 
		extendsView="base",
        members=
          "" 	
	    + "bienServicio { bienServicioProductoViaProductoIdentificador };" 
	    + "detalleBatch { detalleBatchProductoViaProductoIdentificador };" 
	    + "detalleEntraNivel3Externo { detalleEntraNivel3ExternoProductoViaProductoIdentificador };" 
	    + "detalleLoteProducidoNivel2 { detalleLoteProducidoNivel2ProductoViaProductoIdentificador };" 
	    + "detalleLoteProductoUsadoNivel3 { detalleLoteProductoUsadoNivel3ProductoViaProductoIdentificador };" 
	    + "detalleProductoUsado { detalleProductoUsadoProductoViaProductoIdentificador };" 
	    + "detalleSaleForzadoProductoNivel2 { detalleSaleForzadoProductoNivel2ProductoViaProductoIdentificador };" 
	    + "detalleSaleForzadoProductoNivel3 { detalleSaleForzadoProductoNivel3ProductoViaProductoIdentificador };" 
	    + "detalleTransferidoNivel3Nivel2 { detalleTransferidoNivel3Nivel2ProductoViaProductoIdentificador };" 
	    + "formula { formulaProductoViaProductoIdentificador };" 
	),
	@View(extendsView="base",
        members=
          "" 	
	    ),
    @View(name="productoDEFAULT_VIEW", 
	   members=
          " identificador ;" 	
        + "descripcion  ; "
        + "codigo  ; "
        + "promedioVida  ; "
	),
//MP-MANAGED-UPDATABLE-BEGINNING-DISABLE @view-reference-producto@
    @View(name="reference", 
       extendsView="productoDEFAULT_VIEW"
//MP-MANAGED-UPDATABLE-ENDING
    )
})

@Tabs({
@Tab(
properties=
     " descripcion "
    +",  codigo "
    +",  promedioVida "
)
,
@Tab(
name = "ProductoTab",
properties=
     " descripcion "
    +",  codigo "
    +",  promedioVida "
)
,
@Tab(
name = "ProductoTabWithRef",
properties=
     " descripcion "
    +",  codigo "
    +",  promedioVida "
)
})
//MP-MANAGED-ADDED-AREA-BEGINNING @class-annotation@
//MP-MANAGED-ADDED-AREA-ENDING @class-annotation@
public class Producto {

    @Hidden @Id @Column(name="identificador" )
    private Integer identificador; 

//MP-MANAGED-ADDED-AREA-BEGINNING @descripcion-field-annotation@
//MP-MANAGED-ADDED-AREA-ENDING @descripcion-field-annotation@

//MP-MANAGED-UPDATABLE-BEGINNING-DISABLE @ATTRIBUTE-descripcion@
    @Column(name="descripcion",  length=100, nullable=false,  unique=false)
    @Required
    private String descripcion;	
//MP-MANAGED-UPDATABLE-ENDING

//MP-MANAGED-ADDED-AREA-BEGINNING @codigo-field-annotation@
//MP-MANAGED-ADDED-AREA-ENDING @codigo-field-annotation@

//MP-MANAGED-UPDATABLE-BEGINNING-DISABLE @ATTRIBUTE-codigo@
    @Column(name="codigo",  length=50, nullable=false,  unique=false)
    @Required
    private String codigo;	
//MP-MANAGED-UPDATABLE-ENDING

//MP-MANAGED-ADDED-AREA-BEGINNING @promedio_vida-field-annotation@
//MP-MANAGED-ADDED-AREA-ENDING @promedio_vida-field-annotation@

//MP-MANAGED-UPDATABLE-BEGINNING-DISABLE @ATTRIBUTE-promedio_vida@
    @Column(name="promedio_vida",   nullable=false,  unique=false)
    @Required
    private Integer promedioVida;	
//MP-MANAGED-UPDATABLE-ENDING


//MP-MANAGED-UPDATABLE-BEGINNING-DISABLE @parent-SubcuentaMayor-producto@
    @ManyToOne (fetch=FetchType.LAZY ,optional=false) //remove optional=false to aggragate but leads to a side effect when going directly to the entity: required check is not performed=> if no set DB check constraint is raised...
    @JoinColumn(name="subcuenta_mayor_codigo", nullable=false,  unique=false  )
    @ReferenceView ("reference") 
    private SubcuentaMayor subcuentaMayorCodigo; 
    
//MP-MANAGED-UPDATABLE-ENDING
//children
//MP-MANAGED-UPDATABLE-BEGINNING-DISABLE @child-bienServicioProductoViaProductoIdentificador-producto@
    @OneToMany (targetEntity=sistema_oficial.sistema_oficial.domain.sistemaoficial.BienServicio.class, fetch=FetchType.LAZY, mappedBy="productoIdentificador", cascade=CascadeType.REMOVE)//, cascade=CascadeType.ALL)
    private Set <BienServicio> bienServicioProductoViaProductoIdentificador = new HashSet<BienServicio>(); 
   
//MP-MANAGED-UPDATABLE-ENDING
//MP-MANAGED-UPDATABLE-BEGINNING-DISABLE @child-detalleBatchProductoViaProductoIdentificador-producto@
    @OneToMany (targetEntity=sistema_oficial.sistema_oficial.domain.sistemaoficial.DetalleBatch.class, fetch=FetchType.LAZY, mappedBy="productoIdentificador", cascade=CascadeType.REMOVE)//, cascade=CascadeType.ALL)
    private Set <DetalleBatch> detalleBatchProductoViaProductoIdentificador = new HashSet<DetalleBatch>(); 
   
//MP-MANAGED-UPDATABLE-ENDING
//MP-MANAGED-UPDATABLE-BEGINNING-DISABLE @child-detalleEntraNivel3ExternoProductoViaProductoIdentificador-producto@
    @OneToMany (targetEntity=sistema_oficial.sistema_oficial.domain.sistemaoficial.DetalleEntraNivel3Externo.class, fetch=FetchType.LAZY, mappedBy="productoIdentificador", cascade=CascadeType.REMOVE)//, cascade=CascadeType.ALL)
    private Set <DetalleEntraNivel3Externo> detalleEntraNivel3ExternoProductoViaProductoIdentificador = new HashSet<DetalleEntraNivel3Externo>(); 
   
//MP-MANAGED-UPDATABLE-ENDING
//MP-MANAGED-UPDATABLE-BEGINNING-DISABLE @child-detalleLoteProducidoNivel2ProductoViaProductoIdentificador-producto@
    @OneToMany (targetEntity=sistema_oficial.sistema_oficial.domain.sistemaoficial.DetalleLoteProducidoNivel2.class, fetch=FetchType.LAZY, mappedBy="productoIdentificador", cascade=CascadeType.REMOVE)//, cascade=CascadeType.ALL)
    private Set <DetalleLoteProducidoNivel2> detalleLoteProducidoNivel2ProductoViaProductoIdentificador = new HashSet<DetalleLoteProducidoNivel2>(); 
   
//MP-MANAGED-UPDATABLE-ENDING
//MP-MANAGED-UPDATABLE-BEGINNING-DISABLE @child-detalleLoteProductoUsadoNivel3ProductoViaProductoIdentificador-producto@
    @OneToMany (targetEntity=sistema_oficial.sistema_oficial.domain.sistemaoficial.DetalleLoteProductoUsadoNivel3.class, fetch=FetchType.LAZY, mappedBy="productoIdentificador", cascade=CascadeType.REMOVE)//, cascade=CascadeType.ALL)
    private Set <DetalleLoteProductoUsadoNivel3> detalleLoteProductoUsadoNivel3ProductoViaProductoIdentificador = new HashSet<DetalleLoteProductoUsadoNivel3>(); 
   
//MP-MANAGED-UPDATABLE-ENDING
//MP-MANAGED-UPDATABLE-BEGINNING-DISABLE @child-detalleProductoUsadoProductoViaProductoIdentificador-producto@
    @OneToMany (targetEntity=sistema_oficial.sistema_oficial.domain.sistemaoficial.DetalleProductoUsado.class, fetch=FetchType.LAZY, mappedBy="productoIdentificador", cascade=CascadeType.REMOVE)//, cascade=CascadeType.ALL)
    private Set <DetalleProductoUsado> detalleProductoUsadoProductoViaProductoIdentificador = new HashSet<DetalleProductoUsado>(); 
   
//MP-MANAGED-UPDATABLE-ENDING
//MP-MANAGED-UPDATABLE-BEGINNING-DISABLE @child-detalleSaleForzadoProductoNivel2ProductoViaProductoIdentificador-producto@
    @OneToMany (targetEntity=sistema_oficial.sistema_oficial.domain.sistemaoficial.DetalleSaleForzadoProductoNivel2.class, fetch=FetchType.LAZY, mappedBy="productoIdentificador", cascade=CascadeType.REMOVE)//, cascade=CascadeType.ALL)
    private Set <DetalleSaleForzadoProductoNivel2> detalleSaleForzadoProductoNivel2ProductoViaProductoIdentificador = new HashSet<DetalleSaleForzadoProductoNivel2>(); 
   
//MP-MANAGED-UPDATABLE-ENDING
//MP-MANAGED-UPDATABLE-BEGINNING-DISABLE @child-detalleSaleForzadoProductoNivel3ProductoViaProductoIdentificador-producto@
    @OneToMany (targetEntity=sistema_oficial.sistema_oficial.domain.sistemaoficial.DetalleSaleForzadoProductoNivel3.class, fetch=FetchType.LAZY, mappedBy="productoIdentificador", cascade=CascadeType.REMOVE)//, cascade=CascadeType.ALL)
    private Set <DetalleSaleForzadoProductoNivel3> detalleSaleForzadoProductoNivel3ProductoViaProductoIdentificador = new HashSet<DetalleSaleForzadoProductoNivel3>(); 
   
//MP-MANAGED-UPDATABLE-ENDING
//MP-MANAGED-UPDATABLE-BEGINNING-DISABLE @child-detalleTransferidoNivel3Nivel2ProductoViaProductoIdentificador-producto@
    @OneToMany (targetEntity=sistema_oficial.sistema_oficial.domain.sistemaoficial.DetalleTransferidoNivel3Nivel2.class, fetch=FetchType.LAZY, mappedBy="productoIdentificador", cascade=CascadeType.REMOVE)//, cascade=CascadeType.ALL)
    private Set <DetalleTransferidoNivel3Nivel2> detalleTransferidoNivel3Nivel2ProductoViaProductoIdentificador = new HashSet<DetalleTransferidoNivel3Nivel2>(); 
   
//MP-MANAGED-UPDATABLE-ENDING
//MP-MANAGED-UPDATABLE-BEGINNING-DISABLE @child-formulaProductoViaProductoIdentificador-producto@
    @OneToMany (targetEntity=sistema_oficial.sistema_oficial.domain.sistemaoficial.Formula.class, fetch=FetchType.LAZY, mappedBy="productoIdentificador", cascade=CascadeType.REMOVE)//, cascade=CascadeType.ALL)
    private Set <Formula> formulaProductoViaProductoIdentificador = new HashSet<Formula>(); 
   
//MP-MANAGED-UPDATABLE-ENDING
//m2m
    /**
    * Default constructor
    */
    public Producto() {
    }


    public Integer getIdentificador() {
        return identificador;
    }
	
    public void setIdentificador (Integer identificador) {
        this.identificador =  identificador;
    }
    

//MP-MANAGED-UPDATABLE-BEGINNING-DISABLE @GETTER-SETTER-descripcion@
    public String getDescripcion() {
        return descripcion;
    }
	
    public void setDescripcion (String descripcion) {
        this.descripcion =  descripcion;
    } 
//MP-MANAGED-UPDATABLE-ENDING

//MP-MANAGED-UPDATABLE-BEGINNING-DISABLE @GETTER-SETTER-codigo@
    public String getCodigo() {
        return codigo;
    }
	
    public void setCodigo (String codigo) {
        this.codigo =  codigo;
    } 
//MP-MANAGED-UPDATABLE-ENDING

//MP-MANAGED-UPDATABLE-BEGINNING-DISABLE @GETTER-SETTER-promedio_vida@
    public Integer getPromedioVida() {
        return promedioVida;
    }
	
    public void setPromedioVida (Integer promedioVida) {
        this.promedioVida =  promedioVida;
    } 
//MP-MANAGED-UPDATABLE-ENDING


    public SubcuentaMayor getSubcuentaMayorCodigo () {  //
    	return subcuentaMayorCodigo;
    }
	
    public void setSubcuentaMayorCodigo (SubcuentaMayor subcuentaMayorCodigo) {
    	this.subcuentaMayorCodigo = subcuentaMayorCodigo;//this.subcuentaMayorCodigo = subcuentaMayor;
    }

    public Set<BienServicio> getBienServicioProductoViaProductoIdentificador() {
        if (bienServicioProductoViaProductoIdentificador == null){
            bienServicioProductoViaProductoIdentificador = new HashSet<BienServicio>();
        }
        return bienServicioProductoViaProductoIdentificador;
    }

    public void setBienServicioProductoViaProductoIdentificador (Set<BienServicio> bienServicioProductoViaProductoIdentificador) {
        this.bienServicioProductoViaProductoIdentificador = bienServicioProductoViaProductoIdentificador;
    }	
    
    public void addBienServicioProductoViaProductoIdentificador (BienServicio bienServicio) {
    	    getBienServicioProductoViaProductoIdentificador().add(bienServicio);
    }
    
    public Set<DetalleBatch> getDetalleBatchProductoViaProductoIdentificador() {
        if (detalleBatchProductoViaProductoIdentificador == null){
            detalleBatchProductoViaProductoIdentificador = new HashSet<DetalleBatch>();
        }
        return detalleBatchProductoViaProductoIdentificador;
    }

    public void setDetalleBatchProductoViaProductoIdentificador (Set<DetalleBatch> detalleBatchProductoViaProductoIdentificador) {
        this.detalleBatchProductoViaProductoIdentificador = detalleBatchProductoViaProductoIdentificador;
    }	
    
    public void addDetalleBatchProductoViaProductoIdentificador (DetalleBatch detalleBatch) {
    	    getDetalleBatchProductoViaProductoIdentificador().add(detalleBatch);
    }
    
    public Set<DetalleEntraNivel3Externo> getDetalleEntraNivel3ExternoProductoViaProductoIdentificador() {
        if (detalleEntraNivel3ExternoProductoViaProductoIdentificador == null){
            detalleEntraNivel3ExternoProductoViaProductoIdentificador = new HashSet<DetalleEntraNivel3Externo>();
        }
        return detalleEntraNivel3ExternoProductoViaProductoIdentificador;
    }

    public void setDetalleEntraNivel3ExternoProductoViaProductoIdentificador (Set<DetalleEntraNivel3Externo> detalleEntraNivel3ExternoProductoViaProductoIdentificador) {
        this.detalleEntraNivel3ExternoProductoViaProductoIdentificador = detalleEntraNivel3ExternoProductoViaProductoIdentificador;
    }	
    
    public void addDetalleEntraNivel3ExternoProductoViaProductoIdentificador (DetalleEntraNivel3Externo detalleEntraNivel3Externo) {
    	    getDetalleEntraNivel3ExternoProductoViaProductoIdentificador().add(detalleEntraNivel3Externo);
    }
    
    public Set<DetalleLoteProducidoNivel2> getDetalleLoteProducidoNivel2ProductoViaProductoIdentificador() {
        if (detalleLoteProducidoNivel2ProductoViaProductoIdentificador == null){
            detalleLoteProducidoNivel2ProductoViaProductoIdentificador = new HashSet<DetalleLoteProducidoNivel2>();
        }
        return detalleLoteProducidoNivel2ProductoViaProductoIdentificador;
    }

    public void setDetalleLoteProducidoNivel2ProductoViaProductoIdentificador (Set<DetalleLoteProducidoNivel2> detalleLoteProducidoNivel2ProductoViaProductoIdentificador) {
        this.detalleLoteProducidoNivel2ProductoViaProductoIdentificador = detalleLoteProducidoNivel2ProductoViaProductoIdentificador;
    }	
    
    public void addDetalleLoteProducidoNivel2ProductoViaProductoIdentificador (DetalleLoteProducidoNivel2 detalleLoteProducidoNivel2) {
    	    getDetalleLoteProducidoNivel2ProductoViaProductoIdentificador().add(detalleLoteProducidoNivel2);
    }
    
    public Set<DetalleLoteProductoUsadoNivel3> getDetalleLoteProductoUsadoNivel3ProductoViaProductoIdentificador() {
        if (detalleLoteProductoUsadoNivel3ProductoViaProductoIdentificador == null){
            detalleLoteProductoUsadoNivel3ProductoViaProductoIdentificador = new HashSet<DetalleLoteProductoUsadoNivel3>();
        }
        return detalleLoteProductoUsadoNivel3ProductoViaProductoIdentificador;
    }

    public void setDetalleLoteProductoUsadoNivel3ProductoViaProductoIdentificador (Set<DetalleLoteProductoUsadoNivel3> detalleLoteProductoUsadoNivel3ProductoViaProductoIdentificador) {
        this.detalleLoteProductoUsadoNivel3ProductoViaProductoIdentificador = detalleLoteProductoUsadoNivel3ProductoViaProductoIdentificador;
    }	
    
    public void addDetalleLoteProductoUsadoNivel3ProductoViaProductoIdentificador (DetalleLoteProductoUsadoNivel3 detalleLoteProductoUsadoNivel3) {
    	    getDetalleLoteProductoUsadoNivel3ProductoViaProductoIdentificador().add(detalleLoteProductoUsadoNivel3);
    }
    
    public Set<DetalleProductoUsado> getDetalleProductoUsadoProductoViaProductoIdentificador() {
        if (detalleProductoUsadoProductoViaProductoIdentificador == null){
            detalleProductoUsadoProductoViaProductoIdentificador = new HashSet<DetalleProductoUsado>();
        }
        return detalleProductoUsadoProductoViaProductoIdentificador;
    }

    public void setDetalleProductoUsadoProductoViaProductoIdentificador (Set<DetalleProductoUsado> detalleProductoUsadoProductoViaProductoIdentificador) {
        this.detalleProductoUsadoProductoViaProductoIdentificador = detalleProductoUsadoProductoViaProductoIdentificador;
    }	
    
    public void addDetalleProductoUsadoProductoViaProductoIdentificador (DetalleProductoUsado detalleProductoUsado) {
    	    getDetalleProductoUsadoProductoViaProductoIdentificador().add(detalleProductoUsado);
    }
    
    public Set<DetalleSaleForzadoProductoNivel2> getDetalleSaleForzadoProductoNivel2ProductoViaProductoIdentificador() {
        if (detalleSaleForzadoProductoNivel2ProductoViaProductoIdentificador == null){
            detalleSaleForzadoProductoNivel2ProductoViaProductoIdentificador = new HashSet<DetalleSaleForzadoProductoNivel2>();
        }
        return detalleSaleForzadoProductoNivel2ProductoViaProductoIdentificador;
    }

    public void setDetalleSaleForzadoProductoNivel2ProductoViaProductoIdentificador (Set<DetalleSaleForzadoProductoNivel2> detalleSaleForzadoProductoNivel2ProductoViaProductoIdentificador) {
        this.detalleSaleForzadoProductoNivel2ProductoViaProductoIdentificador = detalleSaleForzadoProductoNivel2ProductoViaProductoIdentificador;
    }	
    
    public void addDetalleSaleForzadoProductoNivel2ProductoViaProductoIdentificador (DetalleSaleForzadoProductoNivel2 detalleSaleForzadoProductoNivel2) {
    	    getDetalleSaleForzadoProductoNivel2ProductoViaProductoIdentificador().add(detalleSaleForzadoProductoNivel2);
    }
    
    public Set<DetalleSaleForzadoProductoNivel3> getDetalleSaleForzadoProductoNivel3ProductoViaProductoIdentificador() {
        if (detalleSaleForzadoProductoNivel3ProductoViaProductoIdentificador == null){
            detalleSaleForzadoProductoNivel3ProductoViaProductoIdentificador = new HashSet<DetalleSaleForzadoProductoNivel3>();
        }
        return detalleSaleForzadoProductoNivel3ProductoViaProductoIdentificador;
    }

    public void setDetalleSaleForzadoProductoNivel3ProductoViaProductoIdentificador (Set<DetalleSaleForzadoProductoNivel3> detalleSaleForzadoProductoNivel3ProductoViaProductoIdentificador) {
        this.detalleSaleForzadoProductoNivel3ProductoViaProductoIdentificador = detalleSaleForzadoProductoNivel3ProductoViaProductoIdentificador;
    }	
    
    public void addDetalleSaleForzadoProductoNivel3ProductoViaProductoIdentificador (DetalleSaleForzadoProductoNivel3 detalleSaleForzadoProductoNivel3) {
    	    getDetalleSaleForzadoProductoNivel3ProductoViaProductoIdentificador().add(detalleSaleForzadoProductoNivel3);
    }
    
    public Set<DetalleTransferidoNivel3Nivel2> getDetalleTransferidoNivel3Nivel2ProductoViaProductoIdentificador() {
        if (detalleTransferidoNivel3Nivel2ProductoViaProductoIdentificador == null){
            detalleTransferidoNivel3Nivel2ProductoViaProductoIdentificador = new HashSet<DetalleTransferidoNivel3Nivel2>();
        }
        return detalleTransferidoNivel3Nivel2ProductoViaProductoIdentificador;
    }

    public void setDetalleTransferidoNivel3Nivel2ProductoViaProductoIdentificador (Set<DetalleTransferidoNivel3Nivel2> detalleTransferidoNivel3Nivel2ProductoViaProductoIdentificador) {
        this.detalleTransferidoNivel3Nivel2ProductoViaProductoIdentificador = detalleTransferidoNivel3Nivel2ProductoViaProductoIdentificador;
    }	
    
    public void addDetalleTransferidoNivel3Nivel2ProductoViaProductoIdentificador (DetalleTransferidoNivel3Nivel2 detalleTransferidoNivel3Nivel2) {
    	    getDetalleTransferidoNivel3Nivel2ProductoViaProductoIdentificador().add(detalleTransferidoNivel3Nivel2);
    }
    
    public Set<Formula> getFormulaProductoViaProductoIdentificador() {
        if (formulaProductoViaProductoIdentificador == null){
            formulaProductoViaProductoIdentificador = new HashSet<Formula>();
        }
        return formulaProductoViaProductoIdentificador;
    }

    public void setFormulaProductoViaProductoIdentificador (Set<Formula> formulaProductoViaProductoIdentificador) {
        this.formulaProductoViaProductoIdentificador = formulaProductoViaProductoIdentificador;
    }	
    
    public void addFormulaProductoViaProductoIdentificador (Formula formula) {
    	    getFormulaProductoViaProductoIdentificador().add(formula);
    }
    



//MP-MANAGED-ADDED-AREA-BEGINNING @implementation@
//MP-MANAGED-ADDED-AREA-ENDING @implementation@

}
